package com.ksd.common.excel;

import java.io.File;
import java.util.LinkedHashSet;

public class ExcelFileFinder {

    // 查找符合命名规则的 Excel 文件（包括子文件夹）
    public static LinkedHashSet<String> findMovieExcelFiles(String folderPath) {
        LinkedHashSet<String> filePaths = new LinkedHashSet<>();
        File folder = new File(folderPath);

        // 递归查找文件的辅助方法
        findFilesMovieRecursively(folder, filePaths);

        return filePaths;
    }

    // 递归查找文件的实现
    private static void findFilesMovieRecursively(File file, LinkedHashSet<String> filePaths) {
        // 如果是文件，判断是否符合条件
        if (file.isFile()) {
            String fileName = file.getName();
            // 判断文件是否以“电影”开头且以“.xlsx”结尾
            if (fileName.startsWith("电影") && fileName.endsWith(".xlsx")) {
                filePaths.add(file.getAbsolutePath());
            }
        }
        // 如果是文件夹，递归处理其中的内容
        else if (file.isDirectory()) {
            File[] files = file.listFiles();
            if (files != null) {
                for (File subFile : files) {
                    // 递归调用，处理子文件或子文件夹
                    findFilesMovieRecursively(subFile, filePaths);
                }
            }
        }
    }



    // 查找符合命名规则的 Excel 文件（包括子文件夹）
    public static LinkedHashSet<String> findMusicExcelFiles(String folderPath) {
        LinkedHashSet<String> filePaths = new LinkedHashSet<>();
        File folder = new File(folderPath);

        // 递归查找文件的辅助方法
        findFilesMusicRecursively(folder, filePaths);

        return filePaths;
    }

    // 递归查找文件的实现
    private static void findFilesMusicRecursively(File file, LinkedHashSet<String> filePaths) {
        // 如果是文件，判断是否符合条件
        if (file.isFile()) {
            String fileName = file.getName();
            // 判断文件是否以“电影”开头且以“.xlsx”结尾
            if (fileName.startsWith("歌曲") && fileName.endsWith(".xlsx")) {
                filePaths.add(file.getAbsolutePath());
            }
        }
        // 如果是文件夹，递归处理其中的内容
        else if (file.isDirectory()) {
            File[] files = file.listFiles();
            if (files != null) {
                for (File subFile : files) {
                    // 递归调用，处理子文件或子文件夹
                    findFilesMusicRecursively(subFile, filePaths);
                }
            }
        }
    }
}

